GCP SSH로 파일 업로드와 다운로드하기
✒️ 2025-05-15 15:23 내용 수정
- GCP 게임 서버 자료에서는 새로 서버를 여는 방법까지만 작성했는데, 기존에 사용하던 서버의 데이터를 VM으로 옮겨서 서버를 열어야 했기에 파일 전송 방법을 정리해두기로 했다.
- 아래 참고 자료를 보고 진행했다.
다른 터미널에서 SSH로 직접 연결하게 된 이유
-
GCP의 VM 인스턴스에서 SSH로 연결하는 화면에서도 파일 업로드와 다운로드는 가능하다.
-
하지만 큰 용량의 파일을 전송할 때는 엄청 오래 걸리기도 하며, 실패하기까지 해서 시간을 버리게 되는 일이 있었다.
-
게다가 파일 전송을 실행할 때 SSH를 다시 연결하라는 창이 뜰 때도 있어 Window에서 직접 터미널을 이용해 SSH 연결로 파일을 전송하는 방법을 사용하였다.
-
월드 파일이나 데이터를 전송할 때는 파일 형태로 전송한다.(단일 파일, 압축 파일 등)
작업 환경
- 컴퓨터는 Window를 사용하고 있으며, Visual Studio Code에서 터미널을 열어 진행했다.
- 터미널 작업을 할 수 있는 다른 프로그램으로 진행해도 상관 없다.
- 파일을 주로 주고 받을 디렉터리를 하나 생성하거나 준비하는 것이 좋다.
- 접근하기 쉽게 바탕화면에 디렉터리를 만들고, 내부에
.ssh디렉터리를 하나 만들어 SSH 키 파일을 저장할 예정이다.
- 접근하기 쉽게 바탕화면에 디렉터리를 만들고, 내부에
- SSH의 Linux 기준 명령어는 Telnet과 OpenSSH#Openssh 참고.
SSH 키 생성 및 연결
- Telnet과 OpenSSH#인증키 수동 생성 및 전송 내용도 참고하면 좋다.
- 터미널(VSC, IntelliJ, 기타 등)을 열고,
cd 디렉터리주소를 사용하여 SSH 키를 저장할 디렉터리로 이동한다.- VSC나 IntelliJ 등과 같은 IDE에선 작업을 할 디렉터리를 선택해서 실행한다.
- 작업할 디렉터리에
.ssh디렉터리를 생성해주고,cd .ssh로 이동한다.
ssh-keygen -t rsa -f 파일이름 -C "이메일주소"를 입력한다.- 이메일 주소는 GCP를 사용하고 있는 계정의 이메일 주소다.
ssh-keygen -t rsa -f 파일이름(사용자이름으로) -C "GCP계정이메일주소"
Enter passphrase는 인증키 사용 시 암호를 사용하도록 설정하는 부분으로, 암호 없이 사용한다면 그냥 Enter키를 눌러 넘긴다.- 생성이 완료되면 아래와 같은 화면이 뜬다.
ls를 입력하면 생성된 SSH 키 파일 2개가 있다.
| 파일 | 설명 |
|---|---|
| id_rsa | private 비밀키(로컬에서 저장) |
| id_rsa.pub | public 공개키(서버로 전송) |
cat 인증키파일.pub을 입력해 SSH 키 값을 복사한다.cat은 파일 내용물을 보여준다.
- GCP에서 Compute Engine에 들어가 메타 데이터로 들어간다.
- 메타 데이터 항목의 상단 탭에 수정을 누른다.
- 4번에서 복사한 SSH 키를 입력하고 저장을 누른다.
- SSH 연결을 확인하기 위해 다시 터미널로 돌아와서
ssh -i 인증키파일 사용자@VM외부IP를 입력한다.- 인증키 파일은
.pub확장자가 아닌 파일이다. - 사용자는 VM 인스턴스의 사용자다.
- VM 외부 IP는 VM 인스턴스의 외부 IP 항목에서 확인할 수 있다.
- 인증키 파일은
파일 다운로드(VM->로컬)
- SSH 연결을 한 상태로 테스트를 위해 임의로
touch test.txt를 입력하여 빈 파일을 생성한다.- 파일을 생성한 후
exit를 입력해 SSH 연결을 종료한다.
- 파일을 생성한 후
scp -i 인증키파일 사용자@VM외부IP:디렉터리/test.txt를 입력해 파일을 다운 받는다.- 파일을 잘 받고 있다면 사진에서 녹색으로 표시된 부분처럼 진행도 표시가 뜬다.
- SSH를 연결할 때 인증키 파일의 위치를 항상 잘 작성해야 한다.
scp -i 인증키파일 사용자@VM외부IP:VM에서받을파일
ls나 파일 탐색기를 열어 현재 디렉터리에서 VM으로부터 받은 파일이 있는지 확인한다.
파일 업로드(로컬->VM)
- 파일 업로드 테스트용 파일을 생성한다.
- 아까 VM으로부터 받은 파일을 구분을 위해서 수정만 해줬다.
scp -i 인증키파일 보낼파일 사용자@VM외부IP:디렉터리로 파일을 전송한다.
scp -i 인증키파일 보낼파일 사용자@VM외부IP:파일도착위치
- SSH 연결(
ssh -i 인증키파일 사용자@VM외부IP)을 한 후, 파일 도착 위치로 지정했던 디렉터리로 이동해 로컬에서 보낸 파일이 있는지 확인한다.- 사진에선
ls -lthra | grep test로 현재 디렉터리에 있는 모든 파일을 시간 순 정렬한 후 "test"를 포함하는 파일을 검색했다. cat test_host.txt로 로컬에서 작성한 텍스트 파일의 내용을 확인하여 일치한 것을 확인하였다.
- 사진에선